package handler

import (
	"github.com/gin-gonic/gin"
	"news/pkg/apps"
	"news/pkg/apps/ctx"
	"news/pkg/models"
	"news/pkg/types"
)

// AddSensitiveWord 添加敏感词
// @Tags Sens
// @Summary 添加敏感词
// @Accept json
// @Produce json
// @Security AuthToken
// @Param json body types.AddSensitiveWordForm true "parameter"
// @router /sens [POST]
// @Success 200 {object} types.APIResponse{result=[]models.Sensitive}
func AddSensitiveWord(c *gin.Context) {
	ac := ctx.New(c)
	form := types.AddSensitiveWordForm{}
	if err := ac.Bind(&form); err != nil {
		return
	}
	ac.Response(apps.AddSensitiveWord(ac, &form))
}

// DeleteSensById 删除单个敏感词
// @Tags Sens
// @Summary 删除单个敏感词
// @Accept json
// @Produce json
// @Security AuthToken
// @Param id path string true "敏感词id"
// @router /sens/{id} [DELETE]
// @Success 200
func DeleteSensById(c *gin.Context) {
	ac := ctx.New(c)
	ac.Response(apps.DeleteSensById(ac, models.Id(c.Param("id"))))
}

// DeleteSensByIds 删除敏感词
// @Tags Sens
// @Summary 删除敏感词
// @Accept json
// @Produce json
// @Security AuthToken
// @Param json body types.DeleteSensForm true "parameter"
// @router /sens [DELETE]
// @Success 200
func DeleteSensByIds(c *gin.Context) {
	ac := ctx.New(c)
	form := types.DeleteSensForm{}
	if err := ac.Bind(&form); err != nil {
		return
	}
	ac.Response(apps.DeleteSensByIds(ac, &form))
}

// UpdateSens 修改敏感词
// @Tags Sens
// @Summary 修改敏感词
// @Accept json
// @Produce json
// @Security AuthToken
// @Param id path string true "敏感词id"
// @Param json body types.UpdateSensForm true "parameter"
// @router /sens/{id} [PUT]
// @Success 200 {object} types.APIResponse{result=models.Sensitive}
func UpdateSens(c *gin.Context) {
	ac := ctx.New(c)
	form := types.UpdateSensForm{}
	if err := ac.Bind(&form); err != nil {
		return
	}
	form.Id = models.Id(c.Param("id"))
	ac.Response(apps.UpdateSens(ac, &form))
}

// QuerySens 管理查询敏感词
// @Tags Sens
// @Summary 管理查询敏感词
// @Accept json
// @Produce json
// @Security AuthToken
// @Param json query types.QuerySensWordForm true "parameter"
// @router /sens [GET]
// @Success 200 {object} types.APIResponse{result=[]models.Sensitive}
func QuerySens(c *gin.Context) {
	ac := ctx.New(c)
	form := types.QuerySensWordForm{}
	if err := ac.Bind(&form); err != nil {
		return
	}
	ac.Response(apps.QuerySensWords(ac, &form))
}

// QuerySensWords 查询敏感词数组
// @Tags Sens
// @Summary 查询敏感词数组
// @Accept json
// @Produce json
// @Security AuthToken
// @Param json query types.QuerySensWordForm true "parameter"
// @router /sensWords [GET]
// @Success 200 {object} types.APIResponse{result=[]string}
func QuerySensWords(c *gin.Context) {
	ac := ctx.New(c)
	form := types.QuerySensWordForm{}
	if err := ac.Bind(&form); err != nil {
		return
	}
	ac.Response(apps.QuerySensWordsArry(ac, &form))
}
